iT邦幫忙

DAY 19
0

JavaScript學習路系列 第 19

JavaScript學習路-(19)

  • 分享至 

  • xImage
  •  

今天練習做一個貓咪 SliderShow,
這次的 SliderShow 是按了 next 鍵,圖片就跳到下一張,按 Prev 就回到上一張。
以下記錄做法。
Demo 網址請按我

首先在 html 放進圖片跟按鈕

<div id="gallery">
<img src="http://lorempixel.com/output/cats-q-c-640-480-1.jpg" alt="">
<img src="http://lorempixel.com/output/cats-q-c-640-480-2.jpg" alt="">
<img src="http://lorempixel.com/output/cats-q-c-640-480-3.jpg" alt="">
<img src="http://lorempixel.com/output/cats-q-c-640-480-4.jpg" alt="">
<img src="http://lorempixel.com/output/cats-q-c-640-480-5.jpg" alt="">
</div>
<input type="button" id="btn-prev" value="prev">
<input type="button" id="btn-next" value="next">

接著加上 CSS

/* 圖片顯示 */
.visible { display: block; }
/* 圖片隱藏 */
.hidden { display: none; }
/* 圖片的盒子設定 */
#gallery { margin: 10px auto; position: relative; height: 480px; width: 640px; }
/* 圖片通通定位到同一地方 */
#gallery img { position: absolute; left: 0; top: 0;}

建立索引變數 index:

var index = 0;

建立抓取圖片數量的變數 imgs:

var imgs = document.getElementsByTagName('img');

頁面讀完執行函式,
上一頁按鈕按下去 --> 觸發上一頁的函式、
下一頁按鈕按下去 --> 觸發下一頁的函式:

window.onload = function () {
document.getElementById('btn-next').onclick = function(evt) {
changeNextImg();
}
document.getElementById('btn-prev').onclick = function(evt) {
changePrevImg();
}
}

上一張以及下一張圖片的函式,算出 index 的數字後執行 display() :
index = 0 + 5 - 1 --> 4 % 5 --> 4,
index = 4 + 5 - 1 --> 8 % 5 --> 3,
index = 3 + 5 - 1 --> 7 % 5 --> 2,
index = 2 + 5 - 1 --> 6 % 5 --> 1,
index = 1 + 5 - 1 --> 5 % 5 --> 0

function changePrevImg() {
index = index + imgs.length - 1;
display();
}

index = 0 + 1 --> 1 % 5 --> 1,
index = 1 + 1 --> 2 % 5 --> 2,
index = 2 + 1 --> 3 % 5 --> 3,
index = 3 + 1 --> 4 % 5 --> 4,
index = 4 + 1 --> 5 % 5 --> 0

function changeNextImg() {
index = index + 1;
display();
}

建立讓圖片顯示 / 隱藏的函式:
先建立一個 for 迴圈,當 i 小於 imgs 總數量(Demo 為 5)的時候, i 遞增,
並在 imgs 設定 .hidden 這個 class name 。
因陣列的第一個是 0 之故所以 i 初始值是 0 。
index 等於 index 模除 imgs.length (上面有寫運算方式)
imgs的索引設定 .visible 。

function display() {
for (var i = 0; i < imgs.length; i++) {
imgs[i].className = " hidden";
};
index = index%imgs.length;
imgs[index].className = 'visible';
}

參考資料:
how do i add a class to a given element
& 我家程式自耕農 C瓜

本文同步發表於 http://azzurro.blog.aznc.cc/learn_javascript_19/


上一篇
JavaScript學習路-(18)break, continue, return
下一篇
JavaScript學習路-(20)Cookie
系列文
JavaScript學習路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言